package cn.iocoder.yudao.module.cont.controller.admin.base.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;

import java.time.LocalDate;
import java.util.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat;
import cn.iocoder.yudao.framework.excel.core.convert.DictConvert;

import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

@Schema(description = "管理后台 - 合同收付款记录表  Response VO")
@Data
@ExcelIgnoreUnannotated
public class PayInfoRespVO {

    @Schema(description = "编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "30298")
    @ExcelProperty("编号")
    private Long id;

    @Schema(description = "合同编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "9932")
    @ExcelProperty("合同编号")
    private String htid;

    @Schema(description = "阶段号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("阶段号")
    private String jdh;

    @Schema(description = "收付款类型")
    @ExcelProperty(value = "收付款类型", converter = DictConvert.class)
    @DictFormat("Cont_sfkfs") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String sfklx;

    @Schema(description = "收付款方向")
    @ExcelProperty(value = "收付款方向", converter = DictConvert.class)
    @DictFormat("Cont_sfkfx") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private String sfkfx;

    @Schema(description = "应收付金额")
    @ExcelProperty("应收付金额")
    private BigDecimal ysfje;

    @Schema(description = "实际应收付金额")
    @ExcelProperty("实际应收付金额")
    private BigDecimal sjysfje;

    @Schema(description = "实际收付金额")
    @ExcelProperty("实际收付金额")
    private BigDecimal sjsfje;

    @Schema(description = "未收付金额")
    @ExcelProperty("未收付金额")
    private BigDecimal wsfje;

    @Schema(description = "应收付日期")
    @ExcelProperty("应收付日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime ysfrq;

    @Schema(description = "实际应收付日期")
    @ExcelProperty("实际应收付日期")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime sjysfrq;

    @Schema(description = "差额原因")
    @ExcelProperty("差额原因")
    private String ceyy;

    @Schema(description = "支付方式")
    @ExcelProperty("支付方式")
    private String zffs;

    @Schema(description = "收付款单据号")
    @ExcelProperty("收付款单据号")
    private String djh;

    @Schema(description = "结算时间")
    @ExcelProperty("结算时间")
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime jssj;

    @Schema(description = "结算单据号")
    @ExcelProperty("结算单据号")
    private String jsdjh;

    @Schema(description = "是否开具发票")
    @ExcelProperty(value = "是否开具发票", converter = DictConvert.class)
    @DictFormat("infra_boolean_string") // TODO 代码优化：建议设置到对应的 DictTypeConstants 枚举类中
    private Boolean sfkjfp;

    @Schema(description = "发票号")
    @ExcelProperty("发票号")
    private String fph;

    @Schema(description = "开票单位")
    @ExcelProperty("开票单位")
    private String khfzr;

    @Schema(description = "发票金额")
    @ExcelProperty("发票金额")
    private BigDecimal fpjr;

    @Schema(description = "经手人")
    @ExcelProperty("经手人")
    private String jsr;

    @Schema(description = "票据运送方式")
    @ExcelProperty("票据运送方式")
    private String pjysfs;

    @Schema(description = "票据运输号")
    @ExcelProperty("票据运输号")
    private String pjysh;

    @Schema(description = "备注")
    @ExcelProperty("备注")
    private String bz;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

}